package cz.muni.fi.pa165.dundd.service;

import cz.muni.fi.pa165.dundd.dto.AdministratorDTO;
import java.util.List;

/**
 * Interface that provides service layer for Administrator entity
 *
 * @author xceluch
 */
public interface AdministratorService {

    /**
     * Sends a request to persist {@code Administrator} entity in the database
     *
     * @param admin DTO object
     */
    public void createAdministrator(AdministratorDTO admin);

    /**
     * Sends update request to persistence layer
     *
     * @param admin DTO with updated data
     */
    public void updateAdministrator(AdministratorDTO admin);

    /**
     * Sends a request to delete the entity from database
     *
     * @param admin DTO with data that define the entity
     */
    public void deleteAdministrator(AdministratorDTO admin);

    /**
     * Sends a request to retrieve all {@code Administrator} entities persisted
     * in the database
     *
     * @return {@link List} of DTO objects
     */
    public List<AdministratorDTO> retrieveAllAdministrators();

    /**
     * Sends a request to retrieve from the database {@code Administrator} with
     * a given id
     *
     * @param id ID of the Administrator
     * @return DTO object with the data about the Administrator
     */
    public AdministratorDTO retrieveAdministratorById(Long id);
}
